Riqueza de especies de arácnidos en áreas silvestres protegidas de Costa Rica

Autor/a

Jarod Salas

Fecha de publicación

6 de diciembre de 2024

Presentación

Este documento muestra la riqueza de especies de arácnidos (clase Arachnida) en áreas silvestres protegidas (ASP) de Costa Rica

Fuentes de datos:

Carga de paquetes

library(tidyverse)
library(sf)
library(leaflet)
library(leaflet.extras)
library(leafem)
library(ggplot2)
library(plotly)

Carga de datos

Áreas silvestres protegidas

asp <-
  st_read("asp.gpkg", quiet = TRUE) |>
  st_transform(4326) |>
  st_make_valid()

plot(asp$geom)

Registros de presencia de arácnidos

aracnidos <-
  st_read(
    "aracnidos.csv",
    options = c(
      "X_POSSIBLE_NAMES=decimalLongitude",
      # columna de longitud decimal
      "Y_POSSIBLE_NAMES=decimalLatitude"   # columna de latitud decimal
    ),
    quiet = TRUE
  )

# Asignación del CRS WGS84
st_crs(aracnidos) <- 4326

Visualización de datos

Cantidad de registros de presencia por especie

registros_aracnidos_x_especie <-
  aracnidos |>
  st_drop_geometry() |>
  group_by(species) |>
  summarise(cantidad_registros = n()) |> #n cuenta
  filter(species != "")

grafico_ggplot2 <-
registros_aracnidos_x_especie |>
  arrange(desc(cantidad_registros)) |>
  slice(1:10) |>
  ggplot(aes(x = reorder(species, cantidad_registros), y = cantidad_registros)) +
  geom_col() +
  coord_flip() +
  xlab("Especies de arácnidos") +
  ylab("Cantidad de especies") +
  theme_classic()

ggplotly(grafico_ggplot2) |> config(locale = "es")

Mapa de distribución de la especie Centruroides limbatus

centruroides_limbatus <-
  aracnidos |>
  filter(species == "Centruroides limbatus")
leaflet() |>
    setView(
    lng = -84.19452,
    lat = 9.572735,
    zoom = 7) |>
  addProviderTiles(provider = providers$CartoDB.Positron, group = "Mapa base") |>
    addPolygons(
    data = asp,
    color = "darkgreen",
    stroke = TRUE,
    weight = 1.5,
    group = "ASP"
  ) |>
  addCircleMarkers(
    data = centruroides_limbatus,
    color = "brown",
    radius = 3,
    stroke = TRUE,
    group = "Centruroides limbatus"
  ) |>
  addLayersControl(
    baseGroups = c("Carto Positron"),
    overlayGroups = c("ASP", "Centruroides limbatus")
  )

Mapa de riqueza de especies de arácnidos en ASP

  1. Unión espacial de arácnidos y ASP
aracnidos_union_asp <-
  st_join(
    x = aracnidos,
    y = dplyr::select(asp, codigo),
    join = st_within
  )
  1. Conteo de la cantidad de especies de arácnidos en cada ASP
riqueza_especies_aracnidos_asp <-
  aracnidos_union_asp |>
  st_drop_geometry() |>
  group_by(codigo) |>
  summarise(riqueza_especies_aracnidos = n_distinct(species, na.rm = TRUE))
  1. Unión de geometrías de ASP con dataframe de riqueza de especies
asp_union_riqueza <-
  left_join(
    x = asp,
    y = dplyr::select(riqueza_especies_aracnidos_asp, codigo, riqueza_especies_aracnidos),
    by = "codigo",
  ) |>
  replace_na(list(riqueza_especies_aracnidos_asp = 0))
  1. Mapa de riqueza de especies
# Paleta de colores de riqueza de especies
colores_riqueza_especies <-
  colorNumeric(
    palette = "Reds",
    domain = asp_union_riqueza$riqueza_especies_aracnidos,
    na.color = "transparent"
  )

# Mapa leaflet
leaflet() |>
  setView(
    lng = -84.19452,
    lat = 9.572735,
    zoom = 7) |>
  addTiles(group = "Mapa general (OpenStreetMap)") |>
  addProviderTiles(
    providers$Esri.WorldImagery, 
    group = "Imágenes satelitales (ESRI World Imagery)"
  ) |> 
  addPolygons(
    data = asp_union_riqueza,
    fillColor = ~ colores_riqueza_especies(asp_union_riqueza$riqueza_especies_aracnidos),
    fillOpacity = 0.8,
    color = "black",
    stroke = TRUE,
    weight = 1.0,
    popup = paste(
      paste("<strong>ASP:</strong>", asp_union_riqueza$nombre_asp),
      paste("<strong>Riqueza de especies:</strong>", asp_union_riqueza$riqueza_especies_aracnidos),
      sep = '<br/>'
    ),
    group = "Riqueza de especies"
  ) |>
  addScaleBar(
    position = "bottomleft", 
    options = scaleBarOptions(imperial = FALSE)
  ) |>
  addLegend(
    position = "bottomleft",
    pal = colores_riqueza_especies,
    values = asp_union_riqueza$riqueza_especies_aracnidos,
    group = "Riqueza de especies",
    title = "Riqueza de especies"
  ) |>
  addCircleMarkers(
    data = aracnidos,
    stroke = F,
    radius = 4,
    fillColor = "black",
    fillOpacity = 1.0,
    popup = paste(
      paste0("<strong>Especie: </strong>", aracnidos$species),
      paste0("<strong>Localidad: </strong>", aracnidos$locality),
      paste0("<strong>Fecha: </strong>", aracnidos$eventDate),
      paste0("<strong>Fuente: </strong>", aracnidos$institutionCode),
      paste0("<a href='", aracnidos$occurrenceID, "'>Más información</a>"),
      sep = '<br/>'
    ),    
    group = "Registros de presencia"
  ) |>
  addLayersControl(
    baseGroups = c(
      "Mapa general (OpenStreetMap)", 
      "Imágenes satelitales (ESRI World Imagery)"
    ),
    overlayGroups = c(
      "Riqueza de especies",
      "Registros de presencia"
    )
  ) |>
  addResetMapButton() |>
  addSearchOSM() |>
  addMouseCoordinates() |>
  addFullscreenControl() |>
  hideGroup("Registros de presencia")